@echo off
REM 启用延迟扩展，这是解决在 IF 块中变量无法立即生效的关键
setlocal enabledelayedexpansion

REM 设置代码页为 UTF-8，防止中文乱码
chcp 65001 > nul

echo.
echo === Git 自动化部署脚本 ===
echo.

REM =================================================================
REM 1. 提交代码 (Commit & Push)
REM =================================================================

REM 询问提交备注
set /p commit_message="请输入提交备注 (Commit Message): "

REM 校验备注是否为空
if "%commit_message%"=="" (
    echo.
    echo [错误] 提交备注不能为空！
    goto :end
)

echo.
echo --- 正在暂存所有更改 (git add .)...
git add .

echo --- 正在提交更改 (git commit)...
git commit -m "%commit_message%"
REM 检查上一条命令是否执行成功
if %errorlevel% neq 0 (
    echo.
    echo [错误] Git 提交失败。请检查您的更改或解决冲突后重试。
    goto :end
)

echo --- 正在推送到远程仓库 (git push)...
git push
if %errorlevel% neq 0 (
    echo.
    echo [错误] 推送到远程仓库失败。请检查网络连接或远程仓库权限。
    goto :end
)

echo --- 代码推送成功！
echo.


REM =================================================================
REM 2. 创建标签 (Create Tag)
REM =================================================================

set /p create_tag="是否要创建版本标签 (Tag)? (y/n): "

REM 使用 /i 参数进行不区分大小写的比较
if /i "%create_tag%"=="y" (
    echo.
    set /p version_number="请输入版本号 (例如: 1.0.0): "
    set /p tag_description="请输入版本简述 (例如: 修复登录bug): "

    REM -- 重点：在 IF 块内部，必须使用 !variable! 来获取实时更新的变量值 --
    
    REM 校验版本号和简述是否为空
    if "!version_number!"=="" (
        echo.
        echo [错误] 版本号不能为空！
        goto :end
    )
    if "!tag_description!"=="" (
        echo.
        echo [错误] 版本简述不能为空！
        goto :end
    )

    echo.
    echo --- 正在创建标签 v!version_number!...
    REM 使用 -a 创建带附注的标签，标签名前通常加'v'
    git tag -a v!version_number! -m "!tag_description!"
    if !errorlevel! neq 0 (
        echo.
        echo [错误] 创建标签 v!version_number! 失败。请检查该标签是否已存在。
        goto :end
    )

    echo --- 正在推送标签到远程仓库...
    git push origin v!version_number!
    if !errorlevel! neq 0 (
        echo.
        echo [错误] 推送标签 v!version_number! 失败。请检查远程仓库权限。
        goto :end
    )
    
    echo --- 标签 v!version_number! 创建并推送成功！

) else (
    echo.
    echo --- 已跳过创建标签。
)


REM =================================================================
REM 3. 结束
REM =================================================================

:end
echo.
echo === 脚本执行完毕 ===
pause